/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor. marco frescosdvads
 * asdb
 * asd
 * basd
 * 
 */

package FACTURAS;

import INTERFAZ.*;
import CONTROLES.ControlSucursal;
import UTILITARIOS.Fecha;

import java.util.Date;
import UTILITARIOS.UTextField;
import UTILITARIOS.PanelPickFechas;
import UTILITARIOS.StringToDate;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.util.StringTokenizer;

/**
 *
 * @author Administrador
 */
public class RegistrarNuevaDosificacion extends JDialog implements Propiedades{

//     ControlUsuario control;

    private JPanel titulo;
    private JPanel formulario;
    private JPanel botones;

    private JLabel lblIdSucursal;
    private JLabel lblLlave;
    private JLabel lblNumAutorizacion;    
    
    private Choice choiseIdSucursal;
    private TextArea txtLlave;
    private UTextField txtNumAutorizacion;    

    private PanelPickFechas fecha_limite;

    private JButton btnAceptar;
    private JButton btnCancelar;

    ControlSucursal cSucursal;
    
    public RegistrarNuevaDosificacion(javax.swing.JFrame padre)
    {
        super(padre, true);        
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
    }


    public void setProperties() {
        setLayout(null);
        setSize(560, 288);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setTitle("Formulario de Registro de DOSIFICACION de FACTURAS");
        getContentPane().setBackground(Color.BLACK);
        setResizable(false);
    }

    public void buildComponents() {

        lblLlave = new JLabel("LLAVE : ", JLabel.RIGHT);
        txtLlave = new TextArea(2, 45);
        lblNumAutorizacion = new JLabel("Número de Autorización : ", JLabel.RIGHT);
        txtNumAutorizacion = new UTextField(UTextField.INT_VALUE);

        cSucursal = new ControlSucursal();
        String lista[] = cSucursal.nombresSuc();
        lblIdSucursal = new JLabel("Sucursal(*) : ", JLabel.RIGHT );
        choiseIdSucursal = new Choice();
        for(int i = 0; i<lista.length; i++)
           choiseIdSucursal.add(lista[i]);

        choiseIdSucursal.select(Bienvenida.sucursal.getIdSucursal()+"-"+Bienvenida.sucursal.getNombreSuc());

        fecha_limite = new PanelPickFechas("Fecha Limite de Emisión : ");
        
        titulo = new JPanel();
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("GUARDAR");
        btnCancelar = new JButton("CANCELAR");
    }

    public void setPropertiesComponents() {

        titulo.setLayout(new BorderLayout(1,1));
        titulo.setSize(new Dimension(555,260));
        titulo.setBorder(BorderFactory.createTitledBorder(null,"",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        
        formulario.setLayout(new FlowLayout());
        formulario.setSize(new Dimension(500,130));
        formulario.setBorder(BorderFactory.createTitledBorder(null,"DATOS DE LA DOSIFICACIÓN",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        
        botones.setSize(250, 100);           
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(140,20);
	Dimension dimText = new Dimension(310,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

        lblLlave.setPreferredSize( dimLabel );
        lblLlave.setFont(fontLabel);
        lblLlave.setForeground(Color.BLACK);
        txtLlave.setPreferredSize( new Dimension(310,60) );

        lblIdSucursal.setPreferredSize( dimLabel );
        lblIdSucursal.setFont(fontLabel);
        lblIdSucursal.setForeground(Color.BLACK);
        choiseIdSucursal.setPreferredSize( dimText );

        if(Bienvenida.user.getTipoUsuario().equalsIgnoreCase("ADMINISTRADOR") && Bienvenida.user.getToken().equalsIgnoreCase("INGRESAR") ){
           choiseIdSucursal.setEnabled(true);
           }else{
           choiseIdSucursal.setEnabled(false);
           }

        lblNumAutorizacion.setPreferredSize( dimLabel );
        lblNumAutorizacion.setFont(fontLabel);
        lblNumAutorizacion.setForeground(Color.BLACK);
        txtNumAutorizacion.setPreferredSize( dimText );
        
        fecha_limite.setPreferredSize(new Dimension(450,20));
		
        btnAceptar.setPreferredSize(new Dimension(110,20));
        btnCancelar.setPreferredSize(new Dimension(110,20));

        botones.setOpaque(false);

        btnAceptar.setToolTipText("Registrar Dosificación");
        btnAceptar.setForeground(Color.BLACK);
        btnCancelar.setToolTipText("Cancelar la operación");
        btnCancelar.setForeground(Color.BLACK);

        btnAceptar.setMnemonic('a');
        btnCancelar.setMnemonic('c');
    }

    public void addComponents() {

       
        formulario.add(lblIdSucursal);
        formulario.add(choiseIdSucursal);        
        formulario.add(lblLlave);
        formulario.add(txtLlave);
        formulario.add(lblNumAutorizacion);
        formulario.add(txtNumAutorizacion);
        formulario.add(fecha_limite);

        botones.add(btnAceptar);
        botones.add(btnCancelar);        
        
        add(titulo);        
        titulo.add( "Center",formulario);
        titulo.add("South",botones);

    }
    public void addEvents() {

        btnAceptar.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {

                String idSuc = getChoiseIdSucursal();
                StringTokenizer i = new StringTokenizer(idSuc,"-");
                int idSucursal = Integer.parseInt(i.nextToken());

                if(gettxtNumAutorizacion().equals("") || getTxtLlave().equals(""))
                    JOptionPane.showMessageDialog(null, "El Formulario no ha sido llenado correctamente verifique que los campos no esten vacios", "Confirmación", JOptionPane.ERROR_MESSAGE);
                else{
                    Fecha actual = new Fecha();
                    String fechaE = getFechaLimite();
                    Date fechaC = new StringToDate().convertir(fechaE);
                    
                    if(fechaC.getTime()<=actual.getFechaDate().getTime())
                        JOptionPane.showMessageDialog(null, "La fecha limite de emision Debe ser Mayor a la Fecha Actual", "Confirmación", JOptionPane.ERROR_MESSAGE);
                    else{
                        if(new ControlDosificacion().HayDosificacionActiva(idSucursal)== true){
                            JOptionPane.showMessageDialog(null, "Actualmente Existe una dosificacion Activa Para la Sucursal.\n Contacte al administrador para anular la dosificacion activa y podrer registrar una Nueva", "Confirmación", JOptionPane.ERROR_MESSAGE);
                        }else{
                            Dosificacion dosificacion = new Dosificacion();
                            dosificacion.setFechaLimite(fechaC);
                            dosificacion.setEstado("ACTIVA");
                            dosificacion.setIdSucursal(idSucursal);
                            dosificacion.setLlave(getTxtLlave());
                            dosificacion.setNumAutorizacion(gettxtNumAutorizacion());
                            boolean r = new ControlDosificacion().RegistrarDosificacion(dosificacion);
                            if(r){
                                JOptionPane.showMessageDialog(null, "La dosificacion fue registrada correctamente", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                                dispose();
                            }else
                                JOptionPane.showMessageDialog(null, "Ocurrio un error al tratar de registrar la dosificacion Contacte con el administrador del sistema. Gracias", "Confirmación", JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }
            }
        });
        btnCancelar.addActionListener( new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                        //JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                        //System.exit(0);
                    dispose();
                }
        });
       addWindowListener( new WindowAdapter(){
                @Override
                public void windowClosing(WindowEvent e) {
                        //JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                        //System.exit(0);
                }
        });
    }

    public String getChoiseIdSucursal() {
        return choiseIdSucursal.getSelectedItem();
    }

    public void setChoiseIdSucursal(String choiseIdSucursal) {
        this.choiseIdSucursal.select(choiseIdSucursal);
    }

    public String getTxtLlave() {
        return txtLlave.getText();
    }    
    public String gettxtNumAutorizacion() {
        return txtNumAutorizacion.getText();
    }
    public String getFechaLimite() {

        return fecha_limite.getDateText();
    }


    public static void main(String args[])
    {
        RegistrarNuevaDosificacion n = new RegistrarNuevaDosificacion(new javax.swing.JFrame());
        n.setVisible(true);

    }


}
